import os

structure_str = """
spider_manage/
├── app/
│   ├── api/
│   │   ├── __init__.py
│   │   ├── api.py
│   │   └── endpoints/
│   │       ├── __init__.py
│   │       ├── spiders.py
│   │       ├── jobs.py
│   │       └── schedules.py
│   ├── core/
│   │   ├── __init__.py
│   │   └── config.py
│   ├── crud/
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── crud_spider.py
│   │   ├── crud_job.py
│   │   └── crud_schedule.py
│   ├── db/
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── models.py
│   │   └── session.py
│   ├── schemas/
│   │   ├── __init__.py
│   │   ├── common.py
│   │   ├── spider.py
│   │   ├── job.py
│   │   └── schedule.py
│   ├── services/
│   │   ├── __init__.py
│   │   ├── spider_service.py
│   │   ├── job_service.py
│   │   └── schedule_service.py
│   ├── __init__.py
│   └── main.py
├── spiders/
├── logs/
├── requirements.txt
└── .env
"""

def create_structure(structure: str, base_path="."):
    lines = [line.rstrip() for line in structure.splitlines() if line.strip()]
    path_stack = []

    for line in lines:
        indent_level = (len(line) - len(line.lstrip("│├└ "))) // 4
        line_clean = line.lstrip("│├└─ ")

        # Trim stack to current indent level
        path_stack = path_stack[:indent_level]

        # Append current folder/file
        path_stack.append(line_clean)
        full_path = os.path.join(base_path, *path_stack)

        if line_clean.endswith("/"):
            os.makedirs(full_path, exist_ok=True)
        else:
            dir_path = os.path.dirname(full_path)
            os.makedirs(dir_path, exist_ok=True)
            with open(full_path, "w") as f:
                pass  # Create empty file

    print(f"✅ 结构已创建在：{os.path.abspath(base_path)}")

# 调用方法
create_structure(structure_str)
